In my iOS AU host application, I am using AVAudioUnitComponentManager.components method to retrieve the list of availible Audio Units. It works as expected most of the time. Howether sometimes it returns only Audio Units created by Apple, and none of the third-party Audio Units that are installed on the device. The interesting thing is that, if after I encounter this issue in my app I go to GarageBand and open the Audio Unit list there then when I return to my app, all the third-party AUs are present. So I am wondering maybe some other initialization should be done before calling AVAudioUnitComponentManager.components method which GarageBand is doing and I also should do in my app.Any suggestions?
Post
Replies
Boosts
Views
Activity
I am testing a non-consumable In-App purchase and I found a strange issue. Here is my scenario:1. User buys the In-App.2. The app sends the receipt(Bundle.main.appStoreReceiptURL) for validation to my server which sends it to the app store /verifyReceipt3. Receipt verification is successful, the app unlocks required features.4. User closes the app.5. User opens the app.6. The app gets the user receipt (Bundle.main.appStoreReceiptURL) and sends it for verification.7. The transaction for the In App not found.If however I refresh the receipt by using SKReceiptRefreshRequest and then send it for verification, the transaction is back again. And it is there until the user restarts the app. If he does, the transaction is lost again until I call SKReceiptRefreshRequest.I am having this issue with local builds and builds downloaded using TestFlight.I also noticed, that when the required transaction are not present in the receipt, there are other transactions which I did not make using the current user. Those other transaction are for an auto-renewable subscription which I also have in my app.Also the issue is currently reproducing only on one of my device(iPhone 5s). On my other iPhone all seems to work fine.It looks for me like the local receipt on my 5s iPhone has got corrupted or something and it does not persist the changes after the SKReceiptRefreshRequest.Is there a way to completely remove the receipt for the sandbox environment so I could start from scratch?
I am implementing an auto-renewable subscription in my app.Currently, to check if the user have an active subscription, I examine all the records in `latest_receipt_info` array from the response JSON returned from the Apple's `/verifyReceipt` service, find the one with the max `expires_date_ms` and check if this date is in the future. Before checking the dates I also check if the `status` field is 0 (receipt is valid).I was thinking that it is enough, but I recently found out that there is another field - `cancellation_date_ms`. As I understand from the docs, this filed is present if user has canceled his subscription through the Apple support.From ([Apple docs][https://developer.apple.com/documentation/appstorereceipts/cancellation_date_ms])> You can use this value to:>> Determine whether to stop providing the content associated with the> purchase.>> Check for any latest renewal transactions, which may indicate the user> re-started or upgraded their subscription, for an auto-renewable> subscription purchase.So I am wondering, if a user cancels his subscription through the Apple support, will this affect the `expires_date_ms` for the current subscription period? So the next time I check `expires_date_ms`, I know the subscription is not active.Or does `expires_date_ms` stays the same as it was before the user canceled the subscription, and so I need to check the `cancellation_date_ms` as well?